package com.cacho.s2b.lesson.learn;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Description 正则表达式java.util.regex: 1.Pattern 类 2.Matcher 类 3.
 * @Author LingWei
 * @date 2024/01/28
 **/
public class LearnUtilRegex {
    public static void main( String[] args ) {
        String source = "{{#.response.body.msg}}"; // 原始数据
        // [^{}]=不是{、}任意一个，*=零次或多次匹配，()=一个分组，\\{=转义字符串{
        final String REGEX ="\\{\\{([^{}]*)}}";  // 正则表达式 主要匹配这种格式 #.response.body.msg
        Pattern p = Pattern.compile(REGEX);
        Matcher m = p.matcher(source);
        System.out.println("字符串source是否匹配正则表达式："+m.find());
        System.out.println("字符串source总共匹配正则表达式的分组()个数："+m.groupCount()); //1个
        System.out.println("字符串source总共匹配正则表达式的分组："+m.group(1)); // group()=group(0)=所有

        String date = "2023-09-11";  // 20230911 这种不符合
        // \d=匹配数字1-9， {4}=匹配四个  只能匹配 2023-09-11
        final String DATE ="\\d{4}-\\d{2}-\\d{2}";  // 正则表达式 主要匹配这种格式 2023-09-11
        Pattern p1 = Pattern.compile(DATE);
        Matcher m1 = p1.matcher(date);
        System.out.println("字符串 date 是否匹配正则表达式："+m1.find());
        System.out.println("字符串 date 总共匹配正则表达式的分组：："+m1.group());

        String url = "${account}/openapi";
        final String URL = "\\$\\{(.*)}";  // 匹配 account
        Pattern p2 = Pattern.compile(URL);
        Matcher m2 = p2.matcher(url);
        System.out.println("字符串 ${} 是否匹配find()正则表达式："+m2.find());
        System.out.println("字符串 ${} 总共匹配正则表达式的分组："+m2.group(1));

        String country ="SA";  // 只能2个大写字母
        // ^=以开头，$=以结尾，[A-Z]=大写字母，{2}=匹配2个
        final String CN = "^[A-Z]{2}$";
        Pattern p3 = Pattern.compile(CN);
        Matcher m3 = p3.matcher(country);
        System.out.println("字符串 2个字母 是否匹配正则表达式："+m3.find());
        System.out.println("字符串 2个字母 总共匹配正则表达式的分组：："+m3.group());

        String numberString ="348c7580-21ce-4220-bfc7-1f25a9a88923";  // 348c7580-21ce-4220-bfc7-1f25a9a88923
        // ^=以开头，$=以结尾，[A-Z]=大写字母，{2}=匹配2个
        final String UUID= "[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}";
        Pattern p4 = Pattern.compile(UUID);
        Matcher m4 = p4.matcher(numberString);
        System.out.println("字母和字符串 是否匹配正则表达式："+m4.find());
        System.out.println("字母和字符串 总共匹配正则表达式的分组：："+m4.group());
    }
}